import { debounce } from 'lodash'

/**
 * 创建搜索防抖函数（基于lodash）
 * @param {Function} searchFunc - 实际的搜索逻辑（如调用接口的函数）
 * @param {number} delay - 延迟时间（毫秒，默认300ms）
 * @returns {Object} { debouncedFunc: 防抖函数, cancel: 取消防抖的方法 }
 */
export function createSearchDebounce (searchFunc, delay = 300) {
  // 用lodash的debounce包装搜索函数，确保this指向正确（绑定到调用时的上下文）
  const debouncedFunc = debounce(function (...args) {
    searchFunc.apply(this, args) // 确保searchFunc中的this是组件实例
  }, delay)

  // 返回防抖函数和取消方法（用于组件销毁时清理）
  return {
    debouncedFunc,
    cancel: () => debouncedFunc.cancel()
  }
}
